// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    CharacterEscape :: IdentityEscapeSequence :: SourceCharacter but not
    IdentifierPart
es5id: 15.10.2.10_A5.1_T1
description: "Tested string is \"~`!@#$%^&*()-+={[}]|\\\\:;'<,>./?\" + '\"'"
---*/

function Test() {
    var non_ident = "~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"';
    for (var k = 0; k < non_ident.length; ++k) {
      var arr = new RegExp("\\" + non_ident[k], "g").exec(non_ident);
      assert.notSameValue(arr, null, "No match for character: " + non_ident[k]);
      assert.sameValue(arr[0], non_ident[k]);
    }
}

// preheat
const NUMBER_OF_PREHEAT = 1;
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
    Test();
}

ArkTools.jitCompileAsync(Test);
assert.sameValue(ArkTools.waitJitCompileFinish(Test), true, '[JIT] JIT disabled.');

// test
const NUMBER_OF_TEST = 1; // or 2
for (let i = 0; i < NUMBER_OF_PREHEAT; i++) {
    Test();
}
